#ifndef FUNCTIONENTRY_H_
#define FUNCTIONENTRY_H_

#include <list> // easier to concatenate than vector
#include "VariableEntry.h"

typedef std::list<VariableEntry*> ParamList;

class FunctionEntry : public TableEntry
{
public:	
	FunctionEntry();
	virtual ~FunctionEntry();
	
	void setReturnType(Type type);
	Type getReturnType() const;
	
	void setParameterList(ParamList* pl);
	ParamList* getParamaterList();
	int getParamCount() const;

	attr getAttr() const;
	
	void clearParameterList();
	
	std::string getLabel() const;
	void setLabel(std::string label);
	
	std::ostream& inserter(std::ostream &os) const;
	
private:
	Type returnType;
	std::string label;
	ParamList* parameterList; // check to see if this means we need a copy constructor
};

#endif /*FUNCTIONENTRY_H_*/
